package com.steven.nio;

import java.io.File;
import java.io.FileNotFoundException;
import java.io.RandomAccessFile;
import java.nio.MappedByteBuffer;
import java.nio.channels.FileChannel;

/**
 * 1,可以让文件直接在内存中修改(堆外内存)，操作系统不需要拷贝一次
 */
public class MappedByteBufferPutGet {

    public static void main(String[] args) throws Exception {
        RandomAccessFile randomAccessFile = new RandomAccessFile("D:/2.txt","rw");
        //获取对应的通道
        FileChannel channel = randomAccessFile.getChannel();
        /**
         * 参数1：使用读写模式
         * 参数2:可以直接修改的起始位置
         * 参数3：是映射到内存的大小（不是索引位置），即文件中有多少个字节映射到文件中
         * 实际类型是directByteBuffer
         */
        MappedByteBuffer map = channel.map(FileChannel.MapMode.READ_WRITE, 0, 5);
        map.put(0, (byte) 'H');
        map.put(2, (byte) '1');
        randomAccessFile.close();
    }

}
